package com.xiaoy.util.json;

import java.util.List;

import com.fasterxml.jackson.databind.JavaType;
/**
 * 
 * @author chentianyi
 * 2014-3-18 下午2:50:48
 * TODO 暂时还不支持复杂类型的json2bean
 *
 */
public interface IJsonBeanMapper {

	/** 
	 * 将一个java类对象转换成Json数据格式 
	 * bean可以是POJO，也可以是Collection或数组。
	 * @param bean 需要转换的实体类对象 
	 * @return 转换后的Json格式字符串 
	 * 如果对象为Null, 返回"null".
	 * 如果集合为空集合, 返回"[]".
	 */
	public String toJson (Object bean);
	
	/**
	 * 反序列化POJO或简单Collection如List<String>.
	 * 如果JSON字符串为Null或"null"字符串, 返回Null.
	 * 如果JSON字符串为"[]", 返回空集合.
	 * 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String,JavaType)
	 * @see #fromJson(String, JavaType)
	 */
	public <X> X fromJson(String jsonString, Class<X> pojoClass) ;
	
	/** 
	 * 将Json格式的字符串转换成指定对象组成的List返回 
	 *  
	 * @param jsonString 
	 *            Json格式的字符串 
	 * @param pojoClass 
	 *            转换后的List中对象类型 
	 * @return 转换后的List对象 
	 */
	public<X> List<X> json2List(String jsonString, Class<X> pojoClass) ;
	
	/** 
	 * 将Json格式的字符串转换成指定对象组成的List返回 
	 *  
	 * @param jsonString 
	 *            Json格式的字符串 
	 * @param pojoClass 
	 *            转换后的Map中对象类型 
	 * @return 转换后的Map对象 
	 */
	public<X> List<X> json2Map(String jsonString, Class<X> pojoClass) ;
}


